﻿/* $HeadURL: http://ws201075/svn/deg/dotNet/trunk/Pegasus/src/HostApplicationForm.cs $
-----------------------------------------------------------------------------
        (c) by Martin Blankenstein

Dieses Dokument und die hierin enthaltenen Informationen unterliegen
dem Urheberrecht und duerfen ohne die schriftliche Genehmigung des
Herausgebers weder als ganzes noch in Teilen dupliziert oder reproduziert
noch manipuliert werden.

-----------------+------------------------------------------------------------
Version          : $Revision: 450 $
-----------------+------------------------------------------------------------
Last Change      : $LastChangedDate: 2009-02-23 18:26:54 +0100 (Mo, 23 Feb 2009) $
-----------------+------------------------------------------------------------
Last User        : $LastChangedBy: NLBERLIN\mblankenstein $
-----------------+------------------------------------------------------------
Beschreibung     :
-----------------+ 

-----------------+------------------------------------------------------------
Updates          :
-----------------+

$Id: HostApplicationForm.cs 450 2009-02-23 17:26:54Z NLBERLIN\mblankenstein $

*/

using System.Diagnostics;
using System.Text;
using PaintTogetherStartSelector.Contracts;
using PaintTogetherStartSelector.Messages;
using PaintTogetherServer.Run;

namespace PaintTogetherStartSelector
{
    /// <summary>
    /// EBC zum Start einen PT-Servers
    /// </summary>
    public class PtStartServerAdapter : IPtStartServerAdapter
    {
        /// <summary>
        /// Verarbeitet die Aufforderung einen Server zu starten
        /// </summary>
        /// <param name="message"></param>
        public void ProcessStartServerMessage(StartServerMessage message)
        {
            var clientProcess = new Process();

            clientProcess.StartInfo.FileName = "PaintTogetherServer.Run.exe";
            clientProcess.StartInfo.Arguments = CreateStartParamText(message);

            clientProcess.Start();
        }

        /// <summary>
        /// Erstellt zu den Serverstartangaben die Parameter für den Serverstart
        /// </summary>
        /// <param name="messge"></param>
        /// <returns></returns>
        internal static string CreateStartParamText(StartServerMessage messge)
        {
            var sb = new StringBuilder();

            PtStartClientAdapter.AppendParam(sb, StartServerParams.AliasParamName, messge.Alias);
            PtStartClientAdapter.AppendParam(sb, StartServerParams.PortParamName, messge.Port.ToString());
            PtStartClientAdapter.AppendParam(sb, StartServerParams.WidthParamName, messge.Size.Width.ToString());
            PtStartClientAdapter.AppendParam(sb, StartServerParams.HeightParamName, messge.Size.Height.ToString());

            return sb.ToString();
        }
    }
}
